x86/HPET: fix FSB interrupt masking
authorJan Beulich <jbeulich@suse.com>
Thu, 22 Nov 2012 09:03:23 +0000 (10:03 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 22 Nov 2012 09:03:23 +0000 (10:03 +0100)
commit7bdfb850aecdf43e2723e0a6c4415d6a81d4d187
tree16a71233b8d490f7834961f2e39784cffe562076
parentc7675f1e2be92c91f2f9ce66862f48109c32c4f0
x86/HPET: fix FSB interrupt masking

HPET_TN_FSB is not really suitable for masking interrupts - it merely
switches between the two delivery methods. The right way of masking is
through the HPET_TN_ENABLE bit (which really is an interrupt enable,
not a counter enable or some such). This is even more so with certain
chip sets not even allowing HPET_TN_FSB to be cleared on some of the
channels.

Further, all the setup of the channel should happen before actually
enabling the interrupt, which requires splitting legacy and FSB logic.

Finally this also fixes an S3 resume problem (HPET_TN_FSB did not get
set in hpet_broadcast_resume(), and hpet_msi_unmask() doesn't get
called from the general resume code either afaict).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
xen/arch/x86/hpet.c